package com.ruoyi.retail.service.impl;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.retail.mapper.ErpOrderReturnMapper;
import com.ruoyi.retail.domain.ErpOrderReturn;
import com.ruoyi.retail.service.IErpOrderReturnService;

/**
 * 订单退货Service业务层处理
 *
 * @author ruoyi
 * @date 2025-04-02
 */
@Service
public class ErpOrderReturnServiceImpl implements IErpOrderReturnService
{
    @Autowired
    private ErpOrderReturnMapper erpOrderReturnMapper;

    /**
     * 查询订单退货
     *
     * @param id 订单退货主键
     * @return 订单退货
     */
    @Override
    public ErpOrderReturn selectErpOrderReturnById(Integer id)
    {
        return erpOrderReturnMapper.selectErpOrderReturnById(id);
    }

    /**
     * 查询订单退货列表
     *
     * @param erpOrderReturn 订单退货
     * @return 订单退货
     */
    @Override
    public List<ErpOrderReturn> selectErpOrderReturnList(ErpOrderReturn erpOrderReturn)
    {
        return erpOrderReturnMapper.selectErpOrderReturnList(erpOrderReturn);
    }

    /**
     * 新增订单退货
     *
     * @param erpOrderReturn 订单退货
     * @return 结果
     */
    @Override
    public int insertErpOrderReturn(ErpOrderReturn erpOrderReturn)
    {
        if (erpOrderReturn.getSn() == null || erpOrderReturn.getSn().isEmpty()) {
            String sn = generateReturnSn();
            erpOrderReturn.setSn(sn);
        }
        erpOrderReturn.setCreateTime(DateUtils.getNowDate());
        return erpOrderReturnMapper.insertErpOrderReturn(erpOrderReturn);
    }

    private String generateReturnSn() {
        // 获取当前日期
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
        String dateStr = dateFormat.format(new Date());

        // 查询当天最大的退货单号
        String maxSn = erpOrderReturnMapper.selectMaxSnByDate(dateStr);

        int sequence = 1;
        if (maxSn != null && maxSn.startsWith("TH" + dateStr)) {
            // 提取序列号部分并加1
            String seqStr = maxSn.substring(10); // TH20250619 + 001
            sequence = Integer.parseInt(seqStr) + 1;
        }

        // 格式化为3位数字
        String seqFormatted = String.format("%03d", sequence);

        return "TH" + dateStr + seqFormatted;
    }
    /**
     * 修改订单退货
     *
     * @param erpOrderReturn 订单退货
     * @return 结果
     */
    @Override
    public int updateErpOrderReturn(ErpOrderReturn erpOrderReturn)
    {
        erpOrderReturn.setUpdateTime(DateUtils.getNowDate());
        return erpOrderReturnMapper.updateErpOrderReturn(erpOrderReturn);
    }

    /**
     * 批量删除订单退货
     *
     * @param ids 需要删除的订单退货主键
     * @return 结果
     */
    @Override
    public int deleteErpOrderReturnByIds(Integer[] ids)
    {
        return erpOrderReturnMapper.deleteErpOrderReturnByIds(ids);
    }

    /**
     * 删除订单退货信息
     *
     * @param id 订单退货主键
     * @return 结果
     */
    @Override
    public int deleteErpOrderReturnById(Integer id)
    {
        return erpOrderReturnMapper.deleteErpOrderReturnById(id);
    }
}
